#include<iostream>
#include<list>
#include<cstring>
#include<cstdio>
#include<deque>
using namespace std;
int main()
{
	list<string> la;
	deque<string> da;
	char a[100];
	gets(a);
	int last=0; 
	for(int i=0;i<=strlen(a);i++)
	{
		if(a[i]==' '||a[i]=='\0')
		{
			char tem[100];
			int j=0;
			for(;last+j<i;j++)
			{
				tem[j]=a[last+j];
			}
			tem[j]='\0';
			string temstr(tem);
			la.push_back(temstr);
			da.push_back(temstr);
			last=i+1;
		}
	}
	cout<<la.size()<<endl;
	for(list<string>::reverse_iterator rit=la.rbegin();rit!=la.rend();rit++)
	{
		cout<<*rit<<" ";
	}
	cout<<endl;
	cout<<da.size()<<endl;
	for(deque<string>::reverse_iterator rit=da.rbegin();rit!=da.rend();rit++)
	{
		cout<<*rit<<" ";
	}
	return 0;
}
